package com.example.haojiutao.mapper;


import com.example.haojiutao.common.Result;
import com.example.haojiutao.model.domain.Order;
import com.example.haojiutao.model.vo.response.OrderGoodsDetailVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @Description:订单持久层
 * @Author: zhou_yuan
 * @CreateTime： 2024/1/25 18:45
 */
@Mapper
public interface OrderMapper {
    /*
     * @Description: 用户下单
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/25 18:46
     * @param: order
     * @return: com.example.haojiutao.common.Result
     */
    int insertOrder(Order order);

    /*
     * @Description:查看订单
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/25 18:50
     * @param: orderNumber
     * @return: com.example.haojiutao.common.Result
     */
    Order selectById(Integer orderNumber);

    /*
     * @Description:用户添加收货状态
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/25 18:49
     * @param: order
     * @return: com.example.haojiutao.common.Result
     */
    int updateOrder(Order order);

    /*
     * @Description: 显示个人订单列表
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/25 18:49
     * @param: goods
     * @return: com.example.haojiutao.common.Result
     */
    List<Order> selectList(Order order);

    /*
     * @Description: 删除订单
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/25 18:50
     * @param: null
     * @return: null
     **/
    int updateDeleteFlagById(OrderGoodsDetailVO order);


    /*
     * @Description: 待发货订单列表
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/25 18:50
     * @param: goods
     * @return: com.example.haojiutao.common.Result
     */
    List<OrderGoodsDetailVO> selectBackOrder(OrderGoodsDetailVO orderGoodsDetailVO);

    OrderGoodsDetailVO selectByOrderNumber(Integer orderNumber);

    List<OrderGoodsDetailVO> selectAfterSendOrder(OrderGoodsDetailVO orderGoodsDetailVO);

    List<OrderGoodsDetailVO> selectBeforePayOrder(OrderGoodsDetailVO orderGoodsDetailVO);


    /*
     * @Description: TODO 管理员修改订单信息
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/25 18:55
     * @param: order
     * @return: int
     **/
    int update(Order order);


    List<OrderGoodsDetailVO> selectListByUser(OrderGoodsDetailVO orderGoodsDetailVO);

    Integer updateOrderComment(Order order);
}
